package com.weilx959.spt.core.config;

import com.weilx959.spt.core.utils.Try;
import javafx.scene.Node;

import java.util.Map;

/**
 * 配置接口，用于配置表单项及提交表单
 *
 * @author weilx
 * @since 2024-05-28
 */
public interface Config {

    default Try<Map<String, String>> submit() {
        // do nothing
        return new Try.Success<>(null);
    }

    /**
     * 重置表单，恢复初始状态
     */
    void reset();

    /**
     * 是否已修改
     *
     * @return boolean
     */
    boolean modified();

    /**
     * 布局配置页面
     *
     * @param configMap 配置数据
     * @return 配置数据
     */
    Map<String, String> layout( Map<String, String> configMap);

    /**
     * 反序列化配置数据
     *
     * @param configMap 配置数据
     * @return 反序列化结果
     */
    Map<String, Object> deserialize(Map<String, String> configMap);

    Node getView();
}
